/**
 * TDS PEC 4
 * Grupo 3H2M 
 *
 * El paquete <code>edu.uoc.tds.pec4.rmi</code> contiene los interfaces
 * usados tanto por el servidor como por la aplicaci�n cliente.
 */
package edu.uoc.tds.pec4.rmi;

import edu.uoc.tds.pec4.beans.CFisicaDTO;
import edu.uoc.tds.pec4.beans.CiudadDTO;
import edu.uoc.tds.pec4.beans.EquipamientoDTO;
import edu.uoc.tds.pec4.beans.PaisDTO;
import edu.uoc.tds.pec4.beans.ProvinciaDTO;
import edu.uoc.tds.pec4.beans.TipoEncuentroDTO;
import edu.uoc.tds.pec4.beans.TopDTO;
import edu.uoc.tds.pec4.server.bbdd.exceptions.GestorDiccionarioException;
import java.rmi.Remote;
import java.rmi.RemoteException; 
import java.util.List;

/**
 * La interfaz <code>GestorDiccionarioInterface</code> especifica los métodos que se pueden
 * invocar de forma remota al objeto GestorDiccionario
 *
 * @author	Isabel Guerra Monclova
 * @author	Luis Rodríguez-Manzaneque Sánchez
 * @version	03/11/2011
 * @since	1.00
 */
public interface GestorDiccionarioInterface extends Remote {
    
    /**
     * Devuelve el listado de paises
     * @return La lista de los paises
     * @throws RemoteException
     * @throws GestorDiccionarioException
     */
    public List<PaisDTO> listaPaises() throws RemoteException,
            GestorDiccionarioException;

    /**
     * Devuelve el listado de provincias de un país concreto
     * @param idPais El identificador del pais
     * @return La lista de las provincias
     * @throws RemoteException
     * @throws GestorDiccionarioException
     */
    public List<ProvinciaDTO> listaProvincias(int idPais) throws RemoteException,
            GestorDiccionarioException;
    
    /**
     * Devuelve el listado de ciudades de una provincia concreta
     * @param idProvincia El identificador de la provincia
     * @return La lista de las ciudades de una provincia concreta
     * @throws RemoteException
     * @throws GestorDiccionarioException
     */
    public List<CiudadDTO> listaCiudades(int idProvincia) throws RemoteException,
            GestorDiccionarioException;
    
    /**
     * Devuelve el listado de posibles valores top para filtrar resultados (top 10,20...)
     * @return La lista de posibles top
     * @throws RemoteException
     * @throws GestorDiccionarioException
     */    
    public List<TopDTO> listaTop () throws RemoteException,
            GestorDiccionarioException;
    
        
    /**
     * Devuelve el listado de tipos de encuentro
     * @return La lista de los tipos de encuentro
     * @throws RemoteException
     * @throws GestorDiccionarioException
     */
    public List<TipoEncuentroDTO> listaTiposEncuentro() throws RemoteException,
            GestorDiccionarioException;
    
    /**
     * Devuelve el listado de tipos de características físicas
     * @return La lista de los tipos de características físicas
     * @throws RemoteException
     * @throws GestorDiccionarioException
     */
    public List<CFisicaDTO> listaCFisicas() throws RemoteException,
            GestorDiccionarioException;
    
    /**
     * Devuelve el listado de tipos de equipamiento
     * @return La lista de los equipamientos
     * @throws RemoteException
     * @throws GestorDiccionarioException
     */
    public List<EquipamientoDTO> listaEquipamiento() throws RemoteException,
            GestorDiccionarioException;

}
